import validate from 'wechat-validate'
Page({
  // 通过 behaviors 注入 validate 方法
  behaviors: [validate], // this上面就会有validate方法
  data: {
    // 控制是否显示倒计时
    countDownVisible: false,
    // 手机号
    mobile: '17212341234',
    // 验证码
    code: ''
  },
  // 校验规则
  rules: {
    mobile: [{
        required: true,
        message: '请填写手机号码!'
      },
      {
        pattern: /^1[3-8]\d{9}$/,
        message: '请检查手机号码是否正确!'
      },
    ],
    code: [{
        required: true,
        message: '请填写验证码!'
      },
      {
        pattern: /^\d{6}$/,
        message: '请填写正确的验证码!'
      }
    ]
  },
  onLoad({
    redirectUrl
  }) {
    this.redirectUrl = redirectUrl
  },
  // 监听倒计时组件数值的变化
  countDownChange(ev) {
    this.setData({
      timeData: ev.detail, // 获取倒计时信息 
      countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0,
    })
  },
  // 获取验证码
  async getSMSCode() {
    // 1.校验手机号是否正确
    let {
      valid,
      message
    } = this.validate('mobile')
    if (!valid) return wx.utils.toast(message)
    // 2.展示倒计时
    this.setData({
      countDownVisible: true
    })
    // 3. 发生请求
    let {
      code
    } = await wx.http.get('/code', {
      mobile: this.data.mobile
    })
    this.setData({
      code
    }) // 完全偷了懒，实际是输入，接口不会返回内容
  },
  // 登录提交
  async submitForm() {
    // 1. 表单的完整校验
    let isPass = this.validate() // 校验rules定义好的字段
    // 自动校验所有字段，哪个字段没有通过，会自动弹框提示，返回校验结果布尔值
    if (!isPass) return
    // 2. 发送请求
    let res = await wx.http.post('/login', {
      code: this.data.code,
      mobile: this.data.mobile
    })
    // 3. 提示成功
    wx.utils.toast('登录成功', 'success')
    // 4. 存储token
    const app = getApp()
    app.setToken('token', res.token)
    app.setToken('refreshToken', res.refreshToken)
    // 5. 跳转页面
    wx.redirectTo({
      url: '/' + this.redirectUrl
    })
  }
})